/**
 * @file pt_log.h
 * @brief mini版log调试宏头文件
 * @author yejiahao
 * @date 2023-07-24 11:10:22
 * 
 * @copyright Copyright (c) 2023 by 深圳市鹏天海悦科技有限公司, All Rights Reserved.
 */

#ifndef PT_LOG_H
#define PT_LOG_H

#include <stdio.h>

// 在此修改底层串口打印函数名，格式对应 int printf (const char *__format, ...);
#define _printf printf

#define LOG_ERROR   0
#define LOG_WARN    1
#define LOG_INFO    2
#define LOG_DEBUG   3

/* 修改log宏等级 */
#define LOG_LEVEL   LOG_DEBUG
/* 日志前缀 */
#define USE_PREFIX

#ifdef USE_PREFIX
#define pt_printf(lvl, fmt, ...)      _printf("%c/%03d> " fmt , lvl, __LINE__, ##__VA_ARGS__)
#else /*!< not def  */
#define pt_printf(lvl, fmt, ...)      _printf(fmt, ##__VA_ARGS__)
#endif /*!< #ifdef  */

/* 不带前缀的输出 */
#ifndef PT_LOG
#define PT_LOG(...)         _printf(__VA_ARGS__)
#endif

#if (LOG_LEVEL >= LOG_DEBUG)
#define PT_LOGD(...)        pt_printf('D', __VA_ARGS__)
#else
#define PT_LOGD(...)        ((void)0)
#endif

#if (LOG_LEVEL >= LOG_INFO)
#define PT_LOGI(...)        pt_printf('I', __VA_ARGS__)
#else
#define PT_LOGI(...)        ((void)0)
#endif

#if (LOG_LEVEL >= LOG_WARN)
#define PT_LOGW(...)        pt_printf('W', __VA_ARGS__)
#else
#define PT_LOGW(...)        ((void)0)
#endif

#if (LOG_LEVEL >= LOG_ERROR)
#define PT_LOGE(...)        pt_printf('E', __VA_ARGS__)
#else
#define PT_LOGE(...)        ((void)0)
#endif

#endif /* PT_LOG_H */
